package routers

import (
	"fmt"
	"gin-blog/handlers"
	"gin-blog/pkg"
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
	"net/http"
)

func MiddleWare() gin.HandlerFunc {
	return func(c *gin.Context) {
		tokenString := c.Request.Header.Get("token") //从header头获取token参数
		fmt.Println("获取到token参数为：", tokenString)
		if tokenString == "" {
			c.JSON(http.StatusOK, gin.H{
				"code": 500,
				"msg":  "token为空",
			})
			c.Abort()
		}
		getToken, err := pkg.GetToken(tokenString) //解密token参数
		if err != "" {
			c.JSON(http.StatusOK, gin.H{
				"code": 500,
				"msg":  "token验证失败",
			})
			c.Abort() //中断返回数据
		}
		fmt.Println("解析完token参数后：", getToken)

		c.Set("uid", getToken["uid"]) //设置登录uid
		c.Next()                      //继续
	}
}

func Init() *gin.Engine {

	r := gin.Default()

	//config := cors.Config{
	//	AllowOrigins:     []string{"*"}, // 允许所有来源
	//	AllowMethods:     []string{"*"}, // 允许的方法
	//	AllowHeaders:     []string{"*"}, // 允许所有的请求头
	//	ExposeHeaders:    []string{"*"}, // 暴露的响应头
	//	AllowCredentials: true,          // 允许发送Cookie
	//}
	//r.Use(cors.New(config)) //设置跨域

	//设置跨域和图片访问的路径
	r.Use(cors.Default())          //设置跨域
	r.Static("static", "./static") //设置图片访问的路径

	//////////////////
	r.POST("/users/login", handlers.UsersLogin)
	r.GET("/users/list", handlers.UsersList)
	r.GET("/users/detail", handlers.UsersDetail)
	//////////////////////////

	//不需要登录就可以处理的接口
	r.POST("/user/login", handlers.UserLogin)                          //登录-toekn加密
	r.GET("/user/login/gettoken", MiddleWare(), handlers.UserGetToken) //token解密

	////登录后才能处理的接口
	r.GET("/user/login/listget", handlers.UserLoginGet)
	r.POST("/user/login/listpost", handlers.UserLoginPost)

	//需要登录后才能处理的接口
	r.GET("/user/list", handlers.UserList)     //列表
	r.POST("/user/add", handlers.UserAdd)      //添加用户
	r.GET("/user/del", handlers.UserDel)       //删除用户
	r.GET("/user/detail", handlers.UserDetail) //用户详情

	return r

}
